在linux系统中如何查看cpu和io |
您所在的位置:网站首页 › 系统调用 cpu状态 › 在linux系统中如何查看cpu和io |
在 Linux 系统中,可以使用以下命令查看 CPU 信息: top: 显示系统进程的实时状态 htop: 与 top 类似,但提供了更多的信息和更好的可视化 mpstat: 显示多核 CPU 的状态 lscpu: 显示系统 CPU 的配置信息 查看 IO 信息,可以使用以下命令: iostat : 用于检测磁盘I/O的使用状况 vmstat : 用于检测虚拟内存的使用状况 mpstat : 用于检测 CPU 和磁盘I/O的使用状况 dstat : 用于检测磁盘I/O,网络,CPU等系统资源的使用状况 需要注意的是这些命令需要安装对应的工具包 文件IO的分层设计 先看图:
malloc的buf对应application buffer,用户空间; fwrite是系统提供的最上层接口,也是最常用的接口。它在用户进程空间开辟一个CLib buffer,将多次小数据量相邻写 *** 作(application buffer)先缓存起来,合并,最终调用write函数一次性写入(或者将大块数据分解多次write调用); write函数通过调用系统调用接口,将数据从应用层copy到内核层,所以write会触发内核态/用户态切换。当数据到达page cache后,内核并不会立即把数据往下传递。而是返回用户空间。数据什么时候写入硬盘,有内核IO调度决定,所以write是一个异步调用 read调用是先检查page cache里面是否有数据,如果有,就取出来返回用户,如果没有,就同步传递下去并等待有数据,再返回用户,所以read是一个同步过程; fclose隐含fflush函数,fflush只负责把数据从Clibbuffer拷贝到pagecache中返回,并没有刷新到磁盘上,刷新到磁盘上可以使用fsync函数; 即便fsync仍有可能没写到磁盘上,一是磁盘有缓存,二是即便关闭缓存也可能为了跑分没有真正关闭; ** 一致性 fwrite使用用户进程私有空间,多线程必然需要做同步。write如果写大小小于PIPE_BUF,是原子 *** 作。根据已知信息,内核所做仅限于此,如果两个进程同时写文件,可能出现错乱,需要实测。 ** 安全性 从前面的分层设计来看,使用fsync函数可以最大限度保障安全写入,但仍然没有绝对的安全性。 另外一张图 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/yw/7293472.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |